package zdream.control.input;

/**
 * @author Zdream
 * @date 2023-12-26
 * @since 0.0.1
 */
public interface WorldInput {
	/**
	 * <p>键位映射部分
	 *
	 * 需要映射的键位是这些 (下面会罗列游戏中有意义的操作键, 以及默认映射的键盘键位以及 XBox 360 手柄键位 [未完成])
	 *
	 * <p>
	 * <li>MAP_START (PC: Z, ENTER, ESCAPE) : 启动、游戏内菜单
	 * <li>MAP_BACK (PC: X, TAB, BACKSPACE) : 状态栏菜单
	 * <li>MAP_ATTACK  (XBOX: X; PC: J) : 攻击 (白弹)
	 * <li>MAP_JUMP    (XBOX: A; PC: K, SPACE) : 跳跃
	 * <li>MAP_SPECIAL (XBOX: Y; PC: I) : 特殊武器攻击
	 * <li>MAP_STRONG  (XBOX: B; PC: H) : 重攻击, 洛克是白弹连发
	 * <li>1 ~ 8  (XBOX: 右摇杆; PC: 1~8) : 用于切换特殊武器
	 * <li>MAP_LB     (XBOX: LB; PC: Y) : 能力一
	 * <li>MAP_RUSH   (XBOX: RB; PC: U) : 能力二, 洛克是滑铲
	 * <li>MAP_LT     (XBOX: LT; PC: Q) : ???
	 * <li>MAP_RT     (XBOX: RT; PC: E) : ???
	 * <li>MAP_PROP1 (XBOX: 左十字左; PC: V) : 道具一
	 * <li>MAP_PROP2 (XBOX: 左十字上; PC: B) : 道具二
	 * <li>MAP_PROP3 (XBOX: 左十字右; PC: N) : 道具三
	 * <li>MAP_PROP4 (XBOX: 左十字下; PC: C) : 显示参数
	 * </li></p>
	 */
	public static final int
			MAP_UP = 0x01,
			MAP_DOWN = 0x02,
			MAP_LEFT = 0x03,
			MAP_RIGHT = 0x04,
			MAP_WEAPON1 = 0x11,
			MAP_WEAPON2 = 0x12,
			MAP_WEAPON3 = 0x13,
			MAP_WEAPON4 = 0x14,
			MAP_WEAPON5 = 0x15,
			MAP_WEAPON6 = 0x16,
			MAP_WEAPON7 = 0x17,
			MAP_WEAPON8 = 0x18,
			MAP_BACK = 0x21,
			MAP_START = 0x22,
			MAP_ATTACK = 0x23,
			MAP_JUMP = 0x24,
			MAP_SPECIAL = 0x25,
			MAP_STRONG = 0x26,
			MAP_LB = 0x27,
			MAP_RUSH = 0x28,
			MAP_LT = 0x29,
			MAP_RT = 0x2A,
			MAP_PROP1 = 0x2B,
			MAP_PROP2 = 0x2C,
			MAP_PROP3 = 0x2D,
			MAP_DETAIL = 0x2E;

	boolean isMapKeyDown(int mapKey);
}
